package com.example.block_chain.service.blockChain;


import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import java.util.Map;

public interface IpfsService {
    /**
     * 创建文件夹
     */
    void createDirectory(String path) throws IOException;

    /**
     * 获取文件夹信息
     */
    Map<String, Object> getDirectoryStats(String path) throws IOException;

    /**
     * 指定文件夹、文件名、文件内容创建文件
     * @param directoryPath 文件夹
     * @param filename 文件名（带文件类型）
     * @param content 文件内容
     */
    void addFile(String directoryPath, String filename, byte[] content) throws IOException;

    /**
     * 使用构造器创建文件
     */
    void writeFileUsingBuilder(String directoryPath, String filename, byte[] content) throws IOException;

    /**
     *根据文件路径读取文件
     */
    String readFile(String filePath) throws IOException;

    /**、
     * 获取文件夹中所有文件信息
     * @param path
     */
    List<Map> listDirectory(String path) throws IOException;

    /**
     * 将文件从source复制到destination
     */
    void copy(String source, String destination) throws IOException;

    /**
     * 移动文件
     */
    void move(String source, String destination) throws IOException;

    /**
     * 删除文件
     */
    void remove(String path, boolean recursive) throws IOException;

    /**
     * 根据据文件输入流上传文件并返回文件hash值
     */
    String uploadFileFromStream(String filePath, InputStream inputStream) throws IOException;

    //根据文件路径+文件名获取文件hash
    String getFileHashByFilePath(String filePath) throws IOException;

    /**
     * 根据文件cid检查文件是否存在
     */
    boolean checkFileByFileCid(String fileCid);
}